package com.cmc.cloud.cmclink.doc.service.multimodaltransport;

import com.cmc.cloud.cmclink.doc.entity.BlnoCntrDO;
import com.cmc.cloud.cmclink.doc.entity.CalculateOperateLogDO;
import com.cmc.cloud.cmclink.doc.vo.multimodaltransport.localcost.*;

import javax.validation.Valid;
import java.util.List;

/**
 * @Description: 多式联运
 * @Author: lzp
 * @Date: 2025/11/4 17:39
 */
public interface MultiLocalCostService {


    /**
     * 多式联运local cost计算查询提单信息
     *
     * @param reqVo
     * @return
     */
    List<MultiBlnoLocalCostRespVO> getBlnoInfoLocalCost(MultiBlnoLocalCostReqVO reqVo);

    /**
     * 创建Multi Local COST费用
     *
     * @param createReqVO 创建信息
     */
    void createMultiLocalCost(@Valid MultiLocalCostCreateReqVO createReqVO);

    /**
     * 更新Multi Local COST费用
     *
     * @param updateReqVO 更新信息
     */
    void updateMultiLocalCost(@Valid MultiLocalCostUpdateReqVO updateReqVO);

    /**
     * 删除Multi Local COST费用
     *
     * @param id 编号
     */
    void deleteMultiLocalCost(Long id);

    /**
     * 获得Multi Local COST费用
     *
     * @param blnoId   编号
     * @param imExType 进出口类型
     * @return Multi Local COST费用
     */
    List<MultiLocalCostRespVO> getMultiLocalCost(Long blnoId, String imExType);

    /**
     * 获得Multi Local COST Detail 费用
     *
     * @param blnoId
     * @param imExType
     * @return
     */
    List<MultiLocalCostDetailRespVO> getMultiLocalCostDetail(Long blnoId, String imExType);

    /**
     * 获取多式联运计算日志信息
     *
     * @param blNo
     * @param imExType
     * @return
     */
    CalculateOperateLogDO getMultiCalculateLogInfo(String blNo, String imExType);

    /**
     * 查询箱信息
     *
     * @param blId
     * @return
     */
    List<BlnoCntrDO> getBlNoCntrInfo(Long blId);

    /**
     * 多联成本计算
     *
     * @param multiBlnoCalcutlatReqVo
     * @return
     */
    List<MultiBlnoLocalCostResultVO> multiCalcutlate(MultiBlnoCalcutlatReqVO multiBlnoCalcutlatReqVo);
}
